모의해킹
호스트기반모의해킹_41_윈도우 Unquoted Service Path 악용
작성자 : Heehyeon Yoo|2025-12-14
# 모의해킹# Post-Exploitation# Windows# Privilege Escalation# Service Abuse
1. 개요
Unquoted Service Path(따옴표 없는 서비스 경로) 취약점은 윈도우 서비스의 바이너리 경로(ImagePath)가 공백(Space)을 포함하고 있음에도 큰따옴표("")로 감싸져 있지 않을 때 발생한다.
이 경우 Windows API인 CreateProcess가 서비스 바이너리를 찾을 때 모호함(Ambiguity)이 발생하여, 의도하지 않은(공격자가 생성한) 파일을 먼저 실행하게 된다.
2. 작동 원리(The Flaw)
윈도우가 다음 경로의 서비스를 실행한다고 가정해보자.
- 경로:
C:\Program Files\Abyss Web Server\abyss.exe(따옴표 없음)
CreateProcess 함수는 공백을 기준으로 경로를 끊어서 순차적으로 파일 탐색을 시도한다.
- 1차 시도:
C:\Program.exe확인 ->(없으면 다음) - 2차 시도:
C:\Program Files\Abyss.exe확인 ->(없으면 다음) - 3차 시도:
C:\Program Files\Abyss Web Server\abyss.exe확인 -> 실행
만약 공격자가 C:\Program.exe 또는 C:\Program Files\Abyss.exe라는 파일을 생성할 수 있다면, 원본 서비스 대신 악성 파일이 시스템(System) 권한으로 실행된다.
3. 취약점 식별
3.1 서비스 탐색
PowerShell이나 WMIC 명령어로 "공백이 있고" + "따옴표가 없는" 서비스를 찾는다.
# Unquoted Service Path 탐지 명령어
wmic service get name,displayname,pathname,startmode | findstr /i /v "C:\Windows\\" | findstr /i /v """
/v "C:\Windows\\": 윈도우 기본 서비스 제외./v """: 따옴표가 있는(정상적인) 서비스 제외.
3.2 쓰기 권한 확인(Write Permission)
경로를 찾았더라도, 공격자가 해당 디렉토리에 파일 생성(Write) 권한이 있어야 한다.
icacls "C:\Program Files"accesschk.exe -uwdq "C:\Program Files"(Sysinternals 도구)- Full Control(F) 또는 Write(W) 권한이
Users,Authenticated Users, 또는 현재 사용자에게 부여되어 있는지 확인한다.
4. 공격 실행(Exploitation)
4.1 악성 페이로드 생성
서비스로 실행될 바이너리는 일반 EXE와 포맷이 다르므로, msfvenom의 -f exe-service 옵션을 사용한다.
# Kali Linux
msfvenom -p windows/exec CMD="net localgroup Administrators RedRaccoon /add" -f exe-service -o Abyss.exe
- 위 예시는
RedRaccoon유저를 관리자 그룹에 추가하는 명령어를 실행한다.
4.2 파일 배치 및 재시작
- 생성한
Abyss.exe를 타겟 호스트의C:\Program Files\(취약한 위치)로 전송한다. - 서비스를 재시작하거나 시스템을 재부팅한다.
sc stop [ServiceName]->sc start [ServiceName]- 권한이 부족해 재시작할 수 없다면, 서버가 재부팅될 때까지 기다린다(Persistence).
4.3 결과
서비스가 재시작되면 CreateProcess의 탐색 순서에 따라 Abyss.exe가 먼저 실행되고, 공격자가 심어둔 커맨드(관리자 그룹 추가 등)가 시스템 권한으로 실행된다.